package service.user

import entity.Activity
import entity.User
import service.user.UserInfo

interface UserService {

    /**
     * 手机号密码登录
     */
    fun login(account: String, pwd: String): Pair<String?, Int?>

    /**
     * 微信登录
     */
    fun login(wxcode: String): Pair<String?, Int?>

    /**
     * 刷新token
     */
    fun refresh(oldToken: String): String?

    /**
     * 更改密码
     */
    fun resetPassword(account: String, pwd: String)

    /**
     * 查找活动的审核人
     */
    fun getExaminer(activity: Activity): User

    /**
     * 查找活动的发布人
     */
    fun getPublisher(activity: Activity): User

    /**
     * 根据id查找用户
     */
    fun getUser(id: Int): User?

    /**
     * 根据账号（即手机号）查找用户
     */
    fun getUser(account: String): User?

    /**
     * 修改用户信息(包括账号，不包括密码)
     */
    fun changeInfo(id: Int, info: UserInfo): Boolean

    /**
     * 注册用户信息
     * @param info 中密码未加密
     */
    fun register(info: UserInfo, password: String): User?

    /**
     * 为活动选择一个审核人
     */
    fun pickOneExaminer(): User

    /**
     * 绑定微信账号
     */
    fun bindWXAccount(user: User, code: String):  Pair<String,Int>
}